package com.ashokgelal.tagsnap.services;
import android.content.Context;
import android.location.Address;
import android.location.Geocoder;
import android.location.Location;
import android.os.AsyncTask;
import com.ashokgelal.tagsnap.listeners.AddressResultListener;
import java.io.IOException;
import java.util.List;
import java.util.Locale;
public class ReverseGeocodingService extends AsyncTask<Location, Void, Void> {
private final AddressResultListener mListener;
private final Context mContext;
private Address mAddress;
public ReverseGeocodingService(Context context, AddressResultListener listener) {
mContext = context;
mListener = listener;
}
@Override
protected Void doInBackground(Location... locations) {
Geocoder geocoder = new Geocoder(mContext, Locale.getDefault());
Location loc = locations[0];
List<Address> addresses = null;
try {
// get all the addresses fro the given latitude, and longitude
addresses = geocoder.getFromLocation(loc.getLatitude(), loc.getLongitude(), 1);
} catch (IOException e) {
mAddress = null;
}
// if we have at least one address, use it
if (addresses != null && addresses.size() > 0) {
mAddress = addresses.get(0);
}
return null;
}
@Override
protected void onPostExecute(Void aVoid) {
// set the address on the UI thread
mListener.onAddressAvailable(mAddress);
}
}